/* 
 * GrayRabbit Cms基于J2EE架构内容管理系统
 * Copyright © GrayRabbit Co., Ltd. All rights reserved.
 * Department：运营部
 * 更多信息，请visit:
 * http://code.google.com/p/gray-rabbit-cms/
 */
package org.grayrabbit.cms.dao.category; 
 
import java.util.List;

import org.grayrabbit.cms.entity.Category;
import org.grayrabbit.cms.vo.category.CategoryBean;

import org.grayrabbit.dao.GenericDao;
import org.grayrabbit.dao.util.Page;
import org.grayrabbit.dao.util.QueryCondition;
 
/**
 * <b>Category</b>的DAO接口

 * @version 1.0,创建时间:2011-05-16 14:38:49 
 */
public interface CategoryDao extends GenericDao<Category, String>{
	
	/**
	 * 根据bean组装查询条件
	 */
	public QueryCondition assembly(CategoryBean bean);
	/**
	 * 根据bean组装统计查询条件
	 */
	public QueryCondition assemblyCount(CategoryBean bean);
	public int count(CategoryBean bean);
	/**
	 * 根据bean组装查询条件(名称参数)
	 */
	public QueryCondition assermblyNameQuery(CategoryBean bean);
	
	/**
	 * 根据bean组装统计查询条件(名称参数)
	 */
	public QueryCondition assemblyNameQueryCount(CategoryBean bean);
	/**
	 * 填充分页组件
	 * @param page
	 * @param bean
	 */
	public List<Category> findByPage(Page<Category> page, CategoryBean bean);
	
	/**
	 * 查询所有记录
	 * @param page
	 * @param bean
	 * @return
	 */
	public List<Category> findByPage(CategoryBean bean);
	/**
	 * 根据父Id查询记录（参数parentId，bean）
	 * @param siteBean
	 * @return 
	 */
	public List<Category> findByParentId(String parentId, CategoryBean categoryBean);
	/**
	 * 根据站点id查询栏目
	 * @param siteId
	 * @return
	 */
	public List<Category> findBySiteId(String siteId);
	/**
	 * 根据序号查询实体
	 * @param ord
	 * @return
	 */
	public List<Category> findByOrd(Integer ord,CategoryBean bean);
	
	/**
	 * 检查站点名称唯一性
	 * @param role
	 * @return
	 */
	public Boolean checkNameUnique(String  categoryName,String parentId,String siteId,String catname);
	/**
	 * 检查简称名称唯一性
	 * @param role
	 * @return
	 */
	public Boolean checksimpleunique(String catSimpleName,String siteId,String catoldSimpleName);
	/**
	 * 查询全部记录列表
	 * @return
	 */
	public List<Category> catList(String parentId,String siteId);
	/**
	 * 查询站点下所有栏目
	 * @return
	 */
	public List<Category>tailEndList(String siteId);
	public List<Category> findCat(String[] catIds, String[] siteIds);
	List<Category> ftlFindSonCat(String catId);
	/**
	 * 获取站点下可发布的栏目
	 * @param siteId
	 * @param cat
	 * @return
	 */
	public List<String> findPublishCategoryBySiteId(List<String> siteIds,int currentCatIndex,int max);
	public List<Category> ftlFindByParentId(String catId);
	public String getParentPath(Category obj);
	public List<Category> ftlFindTopCategory(String siteid);
	/**
	 * 得到顶级栏目
	 * @param siteId
	 * @return
	 */
	public List<Category> getTopCategory(String siteId);
	
	public List<Category> ftlFindCategory(String siteid, String categoryid, long[] limit);
	
	/**
	 * 通过站点Id得到顺序第一的栏目
	 */
	public Category getHomeCategory(String siteId);
	
	/**
	 * 通过站点Id和栏目简称查找公告栏目
	 */
	public List<Category> findRollannounceCat(String[] siteId, String rollannounceSimpleName);
	/** 通过栏目名称获取栏目ID
	 * @param catName  栏目名称
	 * @return
	 */
	public String findCatIdByCatName(String catName,String catShortName,String siteId,String siteArea);
	/**
	 *  启用的
	 * @param catName  栏目名称
	 * @param area  栏目所属站点的 区域码
	 * @return
	 */
	public Category findByNameAndSiteArea(String catName,String simpleName);
}